package com.example.demo.dao;

import com.example.demo.entity.pojo.ClassMember;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 班级成员关系表(ClassMember)表数据库访问层
 *
 * @author makejava
 * @since 2025-07-13 11:30:30
 */
public interface ClassMemberDao {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    ClassMember queryById(Integer id);

    /**
     * 查询用户是否已加入班级
     *
     * @param classId 班级ID
     * @param userId 用户ID
     * @return 班级成员记录
     */
    ClassMember queryByClassIdAndUserId(@Param("classId") Integer classId, @Param("userId") String userId);

    /**
     * 查询班级的所有成员
     *
     * @param classId 班级ID
     * @return 成员列表
     */
    List<ClassMember> queryByClassId(@Param("classId") Integer classId);

    /**
     * 查询用户加入的所有班级
     *
     * @param userId 用户ID
     * @return 班级成员列表
     */
    List<ClassMember> queryByUserId(@Param("userId") String userId);

    /**
     * 新增数据
     *
     * @param classMember 实例对象
     * @return 影响行数
     */
    int insert(ClassMember classMember);

    /**
     * 修改数据
     *
     * @param classMember 实例对象
     * @return 影响行数
     */
    int update(ClassMember classMember);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Integer id);

    /**
     * 统计班级成员数量
     *
     * @param classId 班级ID
     * @return 成员数量
     */
    long countByClassId(@Param("classId") Integer classId);
}
